package gui;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JButton;

import java.awt.Color;
import java.util.ArrayList;

import javax.swing.SwingConstants;

import negocio.Clase;
import negocio.ClaseControlador;
import negocio.Sala;
import negocio.SalaControlador;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AsignarSala extends JFrame {

	private JPanel contentPane;
	JLabel lblError;
	JComboBox comboBox;
	ArrayList<Sala> salas;
	private JButton btnCancelar;
	private JButton btnAceptar;
	Salas verSalas=null;
	Clase clase;
	Clases padreClases;
	
	

	
	public AsignarSala(Clases padreClases, Clase clase) {
		 addWindowListener(new WindowAdapter() {
             public void windowClosing(WindowEvent e){
                     padreClases.nullAsignarSala();
             }
     });
		
		this.clase=clase;
		this.padreClases=padreClases;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 305, 207);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblSeleccioneUnaSala = new JLabel("Seleccione una sala");
		lblSeleccioneUnaSala.setBounds(10, 11, 115, 14);
		contentPane.add(lblSeleccioneUnaSala);
		
		comboBox = new JComboBox();
		comboBox.setBounds(135, 8, 147, 20);
		contentPane.add(comboBox);
		
		JButton btnVerSalas = new JButton("Ver salas...");
		btnVerSalas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				verSalas=new Salas(null, null);
				verSalas.setVisible(true);
			}
		});
		btnVerSalas.setBounds(135, 39, 147, 23);
		contentPane.add(btnVerSalas);
		
		lblError = new JLabel("Error");
		lblError.setHorizontalAlignment(SwingConstants.CENTER);
		lblError.setForeground(Color.RED);
		lblError.setBounds(10, 84, 272, 14);
		contentPane.add(lblError);
		
		btnCancelar = new JButton("Cancelar");
		btnCancelar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				padreClases.nullAsignarSala();
				dispose();
			}
		});
		btnCancelar.setBounds(193, 135, 89, 23);
		contentPane.add(btnCancelar);
		
		btnAceptar = new JButton("Aceptar");
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				if(comboBox.getSelectedIndex()!=-1)
				{
					if(validarAulas())
					{
						ClaseControlador.setSala(clase, salas.get(comboBox.getSelectedIndex()));
						padreClases.llenarTabla();
						dispose();
					}
				}
				else
				{
					lblError.setText("Seleccione una sala");
					lblError.setVisible(true);
				}
			}
		});
		btnAceptar.setBounds(94, 135, 89, 23);
		contentPane.add(btnAceptar);
		this.setTitle("Asignar sala");
		lblError.setVisible(false);
		this.llenarCombo();
		this.comboBox.setSelectedIndex(-1);
		
	}
	
	public void llenarCombo()
	{
		salas=SalaControlador.getAll();
		for(Sala s:salas)
		{
			comboBox.addItem(s.getNumero());
		}
		comboBox.setSelectedIndex(-1);
	}

	public boolean validarAulas()
	{
		if(comboBox.getSelectedIndex()!=-1)
		{
			ArrayList<Clase> clasesAulaSeleccionada = ClaseControlador.getClasesPorSala(salas.get(comboBox.getSelectedIndex()));
			for (Clase k:clasesAulaSeleccionada)
			{
				if(clase.seDictaEnFecha(k.getFecha()))
				{
					if(clase.compartenHora(k))
					{
						lblError.setText("Sala no disponible. Por favor seleccione otra");
						lblError.setVisible(true);
						return false;
						
					}
				}
			}
		}
		return true;
	}

}
